﻿using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Script.Services;
using System.Web.Services;
using System.Web.UI;
using System.Web.UI.WebControls;
using AjaxControlToolkit;
using Enums;
using Vallejos.Entidades.Enums;
using Vallejos.Entidades.ModeloDeDatos;
using Vallejos.Negocio;

public partial class Controles_CtlInformacionDomiciliaria : System.Web.UI.UserControl
{
    #region Propiedades

    public ModoLayout Layout;
    public enum ModoLayout { Horizontal, Vertical }

    private InformacionDomiciliaria _informacion;
    #endregion

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack && _informacion == null)
            CargarProvincias();
    }

    private void CargarProvincias()
    {
        var negocio = (NegocioFacade)Session[VariablesDeSesion.NegocioFacade.ToString()];
        HelperUI.CargarLista(ddlProvincia, negocio.LeerProvincias(),
            "Id", "Nombre");
        CargarLocalidades(0);
    }

    private void CargarLocalidades(int idProvincia)
    {
        var negocio = (NegocioFacade)Session[VariablesDeSesion.NegocioFacade.ToString()];
        HelperUI.CargarLista(ddlLocalidad, negocio.LeerLocalidades(idProvincia),
            "Id", "Nombre");
    }

    protected void ddlProvincia_SelectedIndexChanged(object sender, EventArgs e)
    {
        CargarLocalidades(Convert.ToInt32(((DropDownList)sender).SelectedValue));
        ddlLocalidad.Focus();
    }

    public InformacionDomiciliaria ObtenerDatos(int id)
    {
        return new InformacionDomiciliaria
                              {
                                  Id = id,
                                  Calle = txtCalle.Text,
                                  Numero = Convert.ToInt32(txtNumero.Text),
                                  Piso = Convert.ToInt32(txtPiso.Text),
                                  Departamento = txtDepartamento.Text,
                                  CodigoPostal = txtCodigoPostal.Text,
                                  Provincia = ddlProvincia.SelectedIndex > 0
                                                  ? new Provincia {Id = Convert.ToInt32(ddlProvincia.SelectedValue)}
                                                  : null,
                                  Localidad = ddlLocalidad.SelectedIndex > 0
                                                  ? new Localidad {Id = Convert.ToInt32(ddlLocalidad.SelectedValue)}
                                                  : null,Telefonos = 
                                                  new List<Telefono>
                                                  {
                                                      new Telefono
                                                      {
                                                          Numero = txtTelFijo.Text,
                                                          Tipo = new TipoTelefono {idTipo = IdTipoTelefono.Fijo}},
                                                          new Telefono
                                                      {
                                                          Numero = txtTelCelular.Text,
                                                          Tipo = new TipoTelefono {idTipo = IdTipoTelefono.Celular}},
                                                          new Telefono
                                                      {
                                                          Numero = txtFax.Text,
                                                          Tipo = new TipoTelefono {idTipo = IdTipoTelefono.Fax}}
                                        }
                              };
    }

    public void SetearDatos(InformacionDomiciliaria informacion)
    {
        _informacion = informacion;
        txtCalle.Text = informacion.Calle;
        txtNumero.Text = informacion.Numero.ToString();
        txtPiso.Text = informacion.Piso.ToString();
        txtDepartamento.Text = informacion.Departamento;
        txtCodigoPostal.Text = informacion.CodigoPostal;
        CargarProvincias();
        ddlProvincia.SelectedValue = informacion.Provincia.Id.ToString();
        CargarLocalidades(informacion.Provincia.Id);
        ddlLocalidad.SelectedValue = informacion.Localidad.Id.ToString();
        
        var telTemp = informacion.Telefonos.SingleOrDefault(telefono => telefono.Tipo.idTipo == IdTipoTelefono.Celular);
        txtTelCelular.Text = telTemp == null ? string.Empty : telTemp.Numero;

        telTemp = informacion.Telefonos.SingleOrDefault(telefono => telefono.Tipo.idTipo == IdTipoTelefono.Fijo);
        txtTelFijo.Text = telTemp == null ? string.Empty : telTemp.Numero;

        telTemp = informacion.Telefonos.SingleOrDefault(telefono => telefono.Tipo.idTipo == IdTipoTelefono.Fax);
        txtFax.Text = telTemp == null ? string.Empty : telTemp.Numero;
    }
}